2023/12/231457字符
装饰器
- 为某些属性、类、方法、参数提供元数据信息
- 类装饰器本质是一个函数,该函数接收一个参数,表示类本身(构造函数本身)
类装饰器
function test (target: new () => object) {
return class B {}
}
@test
class A {}
const a = new A();
console.log(a); //--> B {}
type constructor = new (...args: any[]) => object;
function d1 (target: constructor) {
console.log('d1');
}
function d2 (target: constructor) {
console.log('d2');
}
@d1
@d2
class A {
prop: string
}
//--> d2 d1 // 装饰器运行顺序,从下至上
type constructor = new (...args: any[]) => object;
function test(str: string) {
return function (target: constructor) {
console.log(target);
}
}
@test('name') // 装饰器传参
class A {}
成员装饰器
function enumerable(target: any, key: string, descriptor: PropertyDescriptor) {
// console.log(target, key, descriptor)
descriptor.enumerable = true;
}
class A {
@enumerable
fn() {}
}
参数装饰器
function test(target: any, method: string, index: number) {
console.log(target, method, index);
}
class A {
sum(a: number, @test b: number) {
return a + b;
}
}
- reflect-metadata
- class-validator
- class-transformer